package com.cw.jeeyt.dao.mapper.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cw.jeeyt.common.Order;
import com.cw.jeeyt.common.annotation.LogParam;
import com.cw.jeeyt.dao.model.api.ApiFacadeDocDo;

/**
 * api接口文档 dao数据库操作接口
 *
 * @author chenw
 * @version 1.0.0
 */
public interface ApiFacadeDocMapper {
    /**
     * 新增api接口文档
     *
     * @param apiFacadeDoc
     * @return 整数
     */
    @LogParam(logDes = "新增api接口文档", operateModule = "api接口文档管理")
    Integer insert(ApiFacadeDocDo apiFacadeDoc);

    /**
     * 新增api接口文档不为空的字段
     *
     * @param apiFacadeDoc
     * @return 整数
     */
    @LogParam(logDes = "新增api接口文档", operateModule = "api接口文档管理")
    Integer insertSelective(ApiFacadeDocDo apiFacadeDoc);

    /**
     * 删除api接口文档
     *
     * @param apiFacadeDoc
     */
    @LogParam(logDes = "删除api接口文档", operateModule = "api接口文档管理")
    void delete(ApiFacadeDocDo apiFacadeDoc);

    /**
     * 修改api接口文档不为null的字段
     *
     * @param apiFacadeDoc
     */
    @LogParam(logDes = "修改api接口文档", operateModule = "api接口文档管理")
    void updateSelective(ApiFacadeDocDo apiFacadeDoc);

    /**
     * 修改api接口文档
     *
     * @param apiFacadeDoc
     */
    @LogParam(logDes = "修改api接口文档", operateModule = "api接口文档管理")
    void update(ApiFacadeDocDo apiFacadeDoc);

    /**
     * 根据主键查询api接口文档
     *
     * @return api接口文档
     */
    ApiFacadeDocDo getById(@Param("id") Long id);

    /**
     * 查询所有api接口文档
     *
     * @return api接口文档集合
     */
    List<ApiFacadeDocDo> queryApiFacadeDocList();

    /**
     * 分页查询api接口文档
     *
     * @param apiFacadeDoc 查询条件
     * @return api接口文档集合
     */
    List<ApiFacadeDocDo> queryByPage(@Param("apiFacadeDoc") ApiFacadeDocDo apiFacadeDoc, @Param("order") Order order)
   ;

    /**
     * 查询api接口文档
     *
     * @param requestData
     * @return
     * @throws Exception
     */
    List<ApiFacadeDocDo> searchResult(String requestData);

    /**
     * 根据接口文档编码查询接口文档信息
     *
     * @param apiDocCode
     * @return
     * @throws Exception
     */
    ApiFacadeDocDo getApiFacadeDocByDocCode(String apiDocCode);

    /**
     * 批量保存接口文档信息
     *
     * @param apiDocList
     * @throws Exception
     */
    void insertBat(List<ApiFacadeDocDo> apiDocList);

    /**
     * 根据项目编码查询项目下的所有接口信息
     *
     * @param projectCode
     * @return
     */
    List<ApiFacadeDocDo> queryListByProjectCode(String projectCode);

}
